{# The model catalog: search it, narrow it to what this install can call, and open a model in the drawer (where it can be made the active one). #} {% from "components/macros/layout.html" import card, drawer_sync %} {% from "components/macros/table.html" import data_table %} {% from "components/macros/form.html" import search_input %}
{{ search_input("q", q, placeholder="Search models") }} {# Kept across the list's swaps (hx-preserve), so the menu stays open while several vendors are ticked. #}
Vendors{% if vendor_count %}: {{ vendor_count }}{% endif %}
{% for v in vendor_options %} {% endfor %}
{% if usable %}{% endif %} {% if released %}{% endif %}
{% with chips_label = "Models" %}{% include "pages/overseer/_chips.html" %}{% endwith %} {% with chips = released_chips, chips_label = "Released" %}{% include "pages/overseer/_chips.html" %}{% endwith %}
{% call card(None, id="ai-catalog") %} {{ data_table([ {"key": "model", "label": "Model", "kind": "link", "target": "#overseer-main", "mark": True}, {"key": "id", "label": "ID", "kind": "code"}, {"key": "kind", "label": "Kind"}, {"key": "vendor", "label": "Vendor"}, {"key": "context", "label": "Context", "kind": "int", "align": "right"}, {"key": "input", "label": "In / 1M", "align": "right"}, {"key": "output", "label": "Out / 1M", "align": "right"}, {"key": "released", "label": "Released"}, ], rows, empty="No models match") }} {% if rows|length >= limit %}

The first {{ limit }}; search to narrow.

{% endif %} {% endcall %} {{ drawer_sync(open_drawer, drawer_param) }}